package com.songlanyun.modules.rabbitmq.mq.producer;

import com.songlanyun.modules.order.entity.ChildOrder;
import com.songlanyun.modules.order.entity.Order;
import com.songlanyun.modules.payorder.entity.PayOrder;
import com.songlanyun.modules.payrefund.entity.PayRefundOrder;
import com.songlanyun.modules.rights.entity.RightsOrder;
import com.songlanyun.modules.ship.entity.OrderPackage;
import com.songlanyun.modules.singlegoods.entity.UnderStockRecordEntity;

public interface SendOrderOrRightsOrderMsgService {

    /**
     * 支付成功发送消息
     * 发送消息不能写在事物内
     *
     * @param payOrder
     */
    void paySuccessSendMsg(PayOrder payOrder);


    /**
     * 下单成功发送消息
     *
     * @param payOrder
     */
    void createPayOrderSuccessSendMsg(PayOrder payOrder);


    /**
     * 物流订单发货完成发送消息(自动收货)
     *
     * @param orderPackage
     */
    void expressShipSuccessSendMsg(OrderPackage orderPackage);


    /**
     * 自提订单备货完成发送消息(自动收货)
     *
     * @param orderPackage
     */
    void pickupShipSuccessSendMsg(OrderPackage orderPackage);

    /**
     * 会员收货完成发送封装消息
     *
     * @param order
     */
    void receiptSuccessSendMsg(Order order);

    /**
     * 核销自提订单成功发送封单消息
     *
     * @param order
     */
    void verificationSuccessSendMsg(Order order);

    /**
     * 核销服务订单全部完成
     *
     * @param childOrder
     */
    void checkServiceOrderCompleteSendMsg(ChildOrder childOrder);

    /**
     * 会员申请维权发送自动同意的消息
     *
     * @param rightsOrder
     */
    void applyRightsOrderSuccessSendMsg(RightsOrder rightsOrder);


    /**
     * 商家同意维权后发送消息
     *
     * @param rightsOrder
     */
    void rightsAgreeSendMsg(RightsOrder rightsOrder);

    /**
     * 商家拒绝维权后微信小程序消息
     *
     * @param rightsOrder
     */
    void rightsRefuseSendMsg(RightsOrder rightsOrder);


    /**
     * 维权退款成功发送微信小程序消息
     *
     * @param payRefundOrder
     */
    void rightsRefundSuccessSendMsg(PayRefundOrder payRefundOrder);

    /**
     * 会员退货退款发货后，商家收货发送维权
     *
     * @param rightsOrder
     */
    void rightReceiptSendMsg(RightsOrder rightsOrder);

    /**
     * 会员维权发货
     *
     * @param rightsOrder
     */
    void rightsShipSendMsg(RightsOrder rightsOrder);
}
